package domain;

import java.util.Collection;
import java.util.Date;

import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;

import org.hibernate.validator.constraints.NotBlank;
import org.springframework.format.annotation.DateTimeFormat;

@Entity
@Access(AccessType.PROPERTY)
public class Incidencia extends DomainEntity {

	private String contenido;
	private String estado;
	private Date fecha;

	public Incidencia() {
		super();
	}

	@NotBlank
	public String getContenido() {
		return contenido;
	}

	public void setContenido(String contenido) {
		this.contenido = contenido;
	}

	@NotBlank
	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	@NotNull
	@Past
	@Temporal(TemporalType.TIMESTAMP)
	@DateTimeFormat(pattern = "dd/MM/yyyy HH:mm")
	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	// Relaciones

	private Collection<Presupuesto> presupuestos;
	private ComunidadDeVecinos comunidadDeVecinos;

	@Valid
	@OneToMany(mappedBy = "incidencia")
	public Collection<Presupuesto> getPresupuestos() {
		return presupuestos;
	}

	public void setPresupuestos(Collection<Presupuesto> presupuestos) {
		this.presupuestos = presupuestos;
	}

	@Valid
	@NotNull
	@ManyToOne(optional = false)
	public ComunidadDeVecinos getComunidadDeVecinos() {
		return comunidadDeVecinos;
	}

	public void setComunidadDeVecinos(ComunidadDeVecinos comunidadDeVecinos) {
		this.comunidadDeVecinos = comunidadDeVecinos;
	}

}
